/*
 * cálculo del periodo entre dos fechas dadas
 * 
 */

package pruebas.fecha.joda.time;

import org.joda.time.Chronology;
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.PeriodType;
import org.joda.time.ReadablePartial;
import org.joda.time.YearMonthDay;
import org.joda.time.chrono.GregorianChronology;

/**
 * clase para pruebas
 * @author grupo 06 - upc_dew 2010
 */
public class Periodo {
    public static void main(String[] args) {
        //recogemos el tipo de periodo de la request
        //int tipoP = Integer.parseInt(req.getParameter("periodo"));
        int tipoP = 1;
        Chronology c = GregorianChronology.getInstance();
        int anyo = 2010;
        int mes = 4;
        int dia = 1;

        // Almacena las fechas inicial y final
        DateTime dosFecha = new DateTime(c);
        DateTime unaFecha = new DateTime(anyo, mes, dia, 0, 0, 0, 0, c);

        //Selecciona el tipo de periodo que se quiere para visualizar la diferencia de las fechas
        Period p;

        switch (tipoP) {
                case 1: p = new Period(unaFecha, dosFecha, PeriodType.days());          //En dias
                        break;
                case 2: p = new Period(unaFecha, dosFecha, PeriodType.months());        //En meses
                        break;
                case 3: p = new Period(unaFecha, dosFecha, PeriodType.hours());         //En horas
                        break;
                case 4: p = new Period(unaFecha, dosFecha, PeriodType.yearDayTime());   //Año-Dia-Horas
                        break;
                case 5: p = new Period(unaFecha, dosFecha, PeriodType.weeks());         //En semanas
                        break;
                case 6: p = new Period(unaFecha, dosFecha, PeriodType.yearMonthDay());  //Año-Mes-Dia
                        break;
                case 7: p = new Period(unaFecha, dosFecha, PeriodType.dayTime());       //Dia-Horas
                         break;
                case 8: ReadablePartial rp1 = new YearMonthDay(anyo, mes, dia);
                        ReadablePartial rp2 = new YearMonthDay(dosFecha.getYear(),dosFecha.getMonthOfYear(), dosFecha.getDayOfMonth());
                        p = new Period().fieldDifference(rp1,rp2);    //Igual al standard, solo con la fecha
                        //p = Period.fieldDifference(rp1,rp2);    //Igual al standard, solo con la fecha
                        break;
                 default: p = new Period(unaFecha, dosFecha, PeriodType.standard());
        }
        System.out.println(p);
    }
}
